//package com.seres.config;
//
//
//import com.seres.config.entity.SysUser;
//import com.seres.constant.CommonKey;
//import com.seres.enums.OftenEnum;
//import com.seres.redis.RedisTableCache;
//import com.seres.util.StringUtils;
//import com.seres.util.ValidatorTools;
//import com.seres.vo.AuthUserInfo;
//import com.seres.vo.UserInfo;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.beans.factory.annotation.Value;
//import org.springframework.stereotype.Component;
//import org.springframework.validation.annotation.Validated;
//
//import javax.annotation.Resource;
//import javax.servlet.*;
//import javax.servlet.http.HttpServletRequest;
//import java.io.IOException;
//import java.util.ArrayList;
//import java.util.List;
//
///**
// * @author Tan-Bowen
// * @version 1.0
// * @description TODO
// * @date 2022/8/15 20:36
// */
//@Component
//public class UserFilter implements Filter {
//
//    @Value("${spring.application.name}")
//    private String applicationName;
//
//    @Autowired
//    private RedisTableCache redisTableCache;
//
//    @Override
//    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
//        if (!applicationName.equals("seres-gate")) {
//            HttpServletRequest request = (HttpServletRequest) servletRequest;
//            String userId = request.getHeader(CommonKey.USER_ID);
//            String dept = request.getHeader(CommonKey.DEPT_IDS);
//            if (StringUtils.isNotBlank(userId)) {
//                SysUser sysUser = redisTableCache.get(SysUser.class, Long.valueOf(userId));
//                setUserInfo(sysUser, dept);
//            }
//
//        }
//        filterChain.doFilter(servletRequest, servletResponse);
//    }
//
//    public void setUserInfo(SysUser user, String dept) {
//        List<Long> childes = new ArrayList<>();
//        if (StringUtils.isNotBlank(dept)) {
//            String[] depts = dept.split(",");
//            for (String s : depts) {
//                childes.add(Long.valueOf(s));
//            }
//        }
//
//        UserInfo userInfo = UserInfo.builder()
//                .userId(user.getId())
//                .userName(user.getUserName())
//                .deptId(user.getDeptId())
//                .deptIds(childes)
//                .build();
//        AuthUserInfo.setUserInfo(userInfo);
//    }
//}
